package com.zofer.study.tree;

/**
 * 输入一棵二叉树，判断该二叉树是否是平衡二叉树。
 *
 * 在这里，我们只需要考虑其平衡性，不需要考虑其是不是排序二叉树
 */
public class IsBalanced {

    public boolean IsBalanced_Solution(TreeNode root) {
        if(root == null){
            return true;
        }
        int dl = getTreeMaxDepth(root.left);
        int dr = getTreeMaxDepth(root.right);
        if(dl-dr > 1 || dl-dr < -1){
            return false;
        }
        return IsBalanced_Solution(root.left) && IsBalanced_Solution(root.right);
    }

    int getTreeMaxDepth(TreeNode treeNode){
        if(treeNode == null){
            return 0;
        }
        int left = getTreeMaxDepth(treeNode.left);
        int right = getTreeMaxDepth(treeNode.right);
        return 1 + Math.max(left,right);
    }
}
